Top 10k strings from Supercode 4 (1985)(Supersoft).tzx
in <root> / bin / z80 / software / Sinclair Spectrum Collection TOSEC.exe / Sinclair ZX Spectrum - Utilities & Educational / Sinclair ZX Spectrum - Utilities & Educational - [TZX] (TOSEC-v2007-01-01) /
Back to the directory listing
3 "23659",F: 3 "23658",O: 2 to be replaced. 2 s of the 2 23635+256* 2 *"m";NN;C$( 2 *"m";E;"SUPERCODE3" 2 "23791",F: 2 "23659",D: 2 "16"-G*(N<P);","; 2 " This routine 1 variables"'" (3) Numeric Arrays"'" (4) 1 value (56 initially)."'" 1 to the bottom 2 1 to the lower X (0<X<25) 1 to be located": 1 this routine before loading Incidentally, to check if your Spec is Issue3, 1 this rout -ine within(using 1 the following:-"'" 1 the 2- byte equivalent(see #101)of the address of the 1 that is to be transformed,into ";: 1 such lines." 1 statement at 1 start in mem." 1 sets like the SCIFI in #79). 1 scrolls when re 1 s. Also see #82,#90,#100,#103h" 1 s,by combining 1 s will not work if 1 s which are stored in RAM(ie,UDGs or alternative 1 s when logically possible.Also see #64 #90,#100,#103h." 1 s to 23813, not 23755 1 s the no: of 1 s the length of the BASIC program. Memory used by variables is ignored. Also see #103,#111."'" Incidentally,to distinguish 16K from 48K Spectrums, 1 s the address of the first 1 s RAMTOP to its original value, zeroes the entire memory & resets System Variables,UDGs & stack." 1 s 22/23. (k=0 for 22,k=1 for 23)" 1 s & statements in a prog. Restart SUPERCODE with 1 s before EVERY call 1 routine,& let x=no: after LD,de.Use #115 with a higher start address & x =no: of bytes.The file should 1 quotes to save space.Also see #64,#82 & #100." 1 prog autostart, enter 1 1 part2 of your program with the header of another prog, by manipulating Record/Pause keys on taperec.Call this routine in part1,& immediately after,call routine115.Part2 will now auto- 1 p,q if bytes) Use the same 1 out these Instructions. 1 on variables, instead use 1 on all 24 lines of the 1 of the same 1 of bottom two 1 of BASIC containing a prespecified sequence of 1 of a given 1 n to prevent the scroll? prompt from corrupting the 1 it to a different address, >23900 so it does not overlap with the System variables."'" (c)To 1 it back with 1 is to be execu- ted.Enter 1 is renumbered(except for arguments like 2.8 or N+3,which are high- lighted.If arg 1 is possible:use 1 instruction. After, 1 ing the two parts." 1 in non-deletab-le lines:the listing vanishes 5)Autostart by using 1 in a BASIC program by another 1 from X to X+6911, 1 from Part1,but anyone who attempts to 1 for another 1 etc. Then 1 ed/reset Spectrum. (5)Press 1 ed,use routine119 before each 1 ed,the BASIC will autorun,& will start the 1 ed into a Spec with shadow ROM paged in,as the prog 1 ed came from tape/Mdrve, 1 each part immediately before saving the next one:this ensures that there will be no delay between 1 d, it must be relocated by the samenumber of bytes."'"(2)It is possible to relocate # 22,23,71&76 too,but only to add-resses which are multiples of 256 away from the original add-resses.Proceed as follows: Get the page of the routine,& press Q to quit.The original address is A - say you want to relocate it to A+256*ZZ,where ZZ is a +/-integer."; 1 d into 62866 & 62867 respectively. The 4 columns are addr,contents in dec+hex & 1 d into 57124/5);if not,you will 1 commands with 1 co-ordinates of the";'" top left hand corner of the box 1 co- ordinates of the top-left hand corner of the box." 1 at any position on the screen: ie, to find the 1 at ANY position X,Y on the 1 as well as resets 1 areutilised.)": 1 are set up as UDGs. To return to usual UDGs, 1 address from which 1 able). Use N to exit. 1 a higher RAMTOP first." 1 a headerless file, disassemble its 1 a RAMTOP belowZ & 1 ________"' 1 ZX SPECTRUM MACHINE CODE TOOLKIT 1 ZX INTERFACE1 MUST BE ATTACHED 1 ZX INTERFACE 1 ATTACHED 1 Z=A+G-F*(N= 1 Z;" /"'" ";Z+1 1 Z2=235 1 Z2=231Enter:- 9990 1 Z2=229 1 Z$:to work 1 Z if from Microdrive).If anaddress >23800 is to be 1 X.For the error 1 X-3,0 The program will work provided you do not 1 X+1,0. To do this to other lines, first find their address X using routine 88, then 1 UMP PAGE#/ 1 UIT AND EXAMINE LINE 1210 1 Transfer OK"'" 1 This is Line #";Z 1 TO SEE HOW THIS WAS DONE,"; 1 THERE HAS BEEN A RECORDING ERROR 1 THE MICRODRIVE VERSION 1 Start address: 1 Start Addr 2 1 Space (1-255)" 1 SUPERCODE4 1 SAVE*""m"";1; 1 S with Interval I 1 S U P E R C O D E II 1 Routine Starts at ";A 1 Routine Ends at ";A+B-E; 1 Recording OK 1 ROUTINE NO: 1 ROUTINE IN ROM 1 ROUTINE #";N;" 1 RELOCATING SUPERCODE II ROUTINES 1 RAM SIZE: 48K"''"PROGRAM LOADED FROM CASSETTE 1 Q,E;"This routine 1 Q,E;"Programs with m/c in 1 Q,E;"Call this routine at the start of your program. 1 Q,D;" The Spectrum doesn't check if there is enough space free in its memory before 1 Part2 by other means will crash the computer." 1 P,D;" To break into autostart progs, (a)Instead of 1 P,D;" (a)To check whether a ZX Inter- face1 is connected,see whether or not an error is produced if an instruction like 1 ON /OFF checkerboard on the 1 O,E;"In order to make the FIRST line of your program non- deletable 1 NON-RELOCATABLE ... use L 1 NO: ROUTINE 1 NO MORE OCCURRENCES 1 MICRODRIVE 1 MEMORY AVAILABLEN 1 M,E;"To make a 1 J;"----> "; 1 J,H;"Routine Length is ";B;" bytes 1 If this is OK, press enter.If itis not, enter the new name (notethat only the first ten 1 INSTRUCTIONS ON THE TRANSFER OF SUPERCODE II TO ZX-MICRODRIVE 1 INDEX PAGE ";( 1 I;"Less Sig More Sig": 1 H,D;" The ZX Microdrive spends most of its time trying to locate a file - actual loading is swift. 2 ways of saving files so that they can be accessed faster are (a) 1 G,D;"1)Make line1 1 1 F.VACHHA BSc 1 Enter Routine No: 1 Enter Index Page No: 1 ERROR CODE: ";N$: 1 D,D;A$;A$;A$;A$: 1 Copying copies is FORBIDDEN 1 Arrays"'" (5) FOR..NEXT control variables"'" Also see #70."; 1 ANY OTHER KEY 1 A/C/D/E/I/J/L/M/N/P/Q/R/S/T 1 A$;A$;A$;A$: 1 >1 copies of the file on the same cartridge:for x copies,do 1 =>Hex(0-FFFF) Enter the no: to be converted. Routine autorepeats-'Q' quits,& 1 :these can be 1 :if not,only 1 of the copies might be erased."'" (b)When saving different parts of the program, 1 :Swop sets all squares with the item On,to Off, & all with the item Off,to On." 1 :On/Off toggle the given Colour item"'" 1 : then call this routine. You will be in EDIT mode, but with the cursor at the END of the 1 9990, & proceedto 1 7,13, enter PRINT 1 65360/1 with the 2 byte eq of the start addr of routine #63(Hex->Dec),which must also be 1 65290. All the memory from 32768 to 65535 is used.To replay,use #78." 1 64834, Box Width"'" 1 64832/5 with 1 64831, Box height"'" 1 64714/5, 2 byte eq of S Also see #60." 1 64711/2, 2 byte eq of I 1 64702, Frequency 2" 1 64693, Frequency 1"'" 1 64682, Duration"'" 1 64670, 28(UP) or 29(DOWN)" 1 64651, Duration"'" 1 64649, Span"'" 1 64648, Frequency"'" 1 63980/1, 2 byte eq of Start Address ) with the display 1 63951, Duration" 1 63905, New 1 63903, Old 1 63801, No: to be inserted" 1 63798/9, Start Address (2 byte eq)"'" 1 63796, No: of bytes"'" 1 63713/14 with the address of the new 1 63652/53 with the 2-byte equiv.(see #101)of the address of the 1 63648, no: of 1 63502,No: of 1 63499/500,2 byte equiv. (see#101)of 1 63017/8, Time(ms) "" """ 1 63014/5, Pitch( 2 byte eq) 1 63012, Number of notes 1 63011, Pitch Decrement 1 63004/5, Time(ms) "" """ 1 63001/2, Pitch( 2 byte eq) 1 60039.Z contains the required 1 60020, Colours (0-7) 1 60006, Duration (1-127) 1 58690/1,Addr to 1 58687/8,No: bytes to 1 58684/5,Addr to 1 58682,Box Length in 1 58681,Box Width in pixels 1 58680,64(Up)72(Mid)80(Low) 1 58679,Top Left Square 1 57342. 191=>Yes; 255=>No.To make Iss X progs work on Iss Y,precede all 1 57342,191( ifX=1/2,Y=3)or 255(ifX=3,Y=1/2)" 1 57123,195 IF you wish to execute m/c(from address 1 57114/5, Addr of 1st byte 1 57110/1, Number of bytes 1 57091,X"'" Also see Routine #119" 1 56777,Speed(from 1=Fast to 255=Slow):if too fast you might be unable to read it. Call the routine either before running program(ignoring the initial display)or during the program.TRACE remains ON until you enter 1 3756 does a 1 32s.Also see #71" 1 3,""s"" at the start"'" (2)To 1 23788.If = Program length found with #104 then it came from a MicroDrive" 1 23787+256* 1 23728/9, 2 byte eq: of X 1 23693,X sets the global 1 23692,255 within the loop that generates the lines." 1 23676,255."; 1 23676, 223 1 23670 & 23671 give the less sig: & more sig: bytes respectively." 1 23659,2. Use 1 23659,0 before each 1 23659,0 at prog start - the effect is that of no:5)." 1 23636.If=23755,it hasn't been paged in so far."'" (c)To check if the program just 1 23636,92.3)Use #59,#98,call #65/66 to disable BREAKs & #68 for nondeleta- ble 1 23636,150. To return to normal 1 23636),100. You can RUN but not LIST prog until you 1 23635+256 * 1 23613 -2 9999 1 23610,255: 1 23609,9. The improvement is great with long 1 23607, 60."; 1 23607, 223 1 23606/7 WITH THE LESS/MORE SIGNIFICANT BYTES OF THE START ADDRESS LESS 256(THIS IS CURRENTLY 0/223). TO RETURN TO THE USUAL 1 23582,27.Now 1 23574+2*N,19+2*N" 1 23562,2"'" 1 23552,RAMTOP-23550-F to save your program disguised as bytes- it will autostart at the first line."'" Also see #104."; 1 23550,Address of LAST byte of 1 22/23"''" Alternatively,use 1 120"'"Then enter 1 10(No Error Trap)"'"Turn Page: Use ENTER or Jump"'"Menu:";: 1 0)."''" Note that if X= 1 0 restarts" 1 0 reaccesses the toolkit.": 1 0 (Error Trap)"'" 1 .Keeping the 1 .If the lower part of 1 ."'" To speed up cursor response,use 1 . Incidentally,if a ZX-Interface1 is attached,enter 1 1 - 23549. When the 1 ,use routine 87 to find its 1 ,to the given address,a headerless file" 1 ,this routine merges a 1 ,say X, to a new 1 ,as does the command 1 ,L:BREAK are ignored." 1 , on an empty Spectrum,to 1 , which saves space but reduces speed. 0 is replaced by NOT PI. Also see #64,#82,#90,#103,#104. To save even more space,replace all commonly occurring numbers (ie 0,1,2,10 etc)by variables, defined at the start. Routine #72 is useful for locating no:s" 1 *ing:if a program is long/RAMTOP is low it could crash when you try to 1 *ing long programs.If any message besides 0 OK appears,shorten the prog: or 1 *"m";E;"SUPERCODE4": 1 *"m";E;"SUPERCODE4" 1 *""m"";n;Name$ 1 * it.That would lose the whole program.Instead,call this routine before 1 * ""m"";n;Name$( 1 )to tfr parts 3&4."'"(4)You now have a verified copy of SUPERCODE on microcartridge -it will autostart if you enter 1 )to Tape/Microdrive, 1 ). To access a routine whose no: is known, press 1 ). For ways to relocate routines, press 1 ),No:s/Var (2.3,Z,A$),operations(*),rel(<) etc,or combinations of these. 1 ), or just after,part1,and call it from there.It will 1 ) to restart. To get this routine's details another time, press 1 (with Z=A+256*ZZ)as in case(1) overleaf.Note thatthe routine will no longer workat its old address."'"(3)The ROM routines & #120 are vdifficult to relocate (why ever relocate a ROM routine?!),#77/78have to be located at the top ofRAM.": 1 (same number),0.2) 1 (Index). Use ENTER to turn pages To access the next routine in the Index, press 1 (63768,63771) 1 (63762) 1 (63744) 1 (63738) 1 (63732) 1 (1)Using PAUSE"'"(2)W/out PAUSE 1 (1)Reset the Spectrum.Put a new cartridge in Microdrive#1"'"(2)Enter 1 (*)/ INDEX/ CUSTOMISE"'"Restart: 1 (""SUPERCODE"", or ERCO),commands( 1 (" 0:OK,8:END,9:STOP are ignored. Or,errors can be suppressed w/o #65:use 1 1 '"This routine will be saved with the provisional name 1 '"If an error message appears, useGOTO 0 to restart."'"Enter the Microdrive number, or just press Enter for the default# of 1.": 1 & statement no: currently being executed. 1 #4; is executed(use with r.no:65) This pages in the shadow ROM, if present."'" (b)To check if the shadowROM is paged in, 1 #4 will call the m/c" 1 # command does 1 "To store this routine on a Microdrive cartridge,press 1 "The SAVE is over."'"Proceeding with VERIFY.": 1 "Please replay the tape.": 1 "OK,the name is 1 "OK,the Microdrive # is 1 "Further Reading: Programming the Z80 (R.Zaks,ISBN 0-89588-094-6) Complete SpectrumROMDisassembly (I.Logan&F.O'Hara,ISBN 0-86759- 117-X)": 1 "F R ` F R `"'': 1 "And now at slow speed": 1 ";A+P;", Box Width"'" 1 ";A+M;", Box Height" 1 ";A+G;" with"'" 1 ";A+E;", Overall Colour" 1 ";A+E;", New Attribute Val"'" 1 ";A+E;" /"'" ";A+F;", 2 byte equivalent of X."'" 1 ";("60878/9" 1 "9",H;"To call this routine, use"; 1 "9",D;" If the 2 byte equivalent of X = L(Less)/M(More) sig: bytes,then L+256*M=X.The less significant byte comes 1st. This routine is an instant converter of numbers from 0-65535 to their 2 byte equivalents.To convert X to its 2 byte equiv.,enter 1 "66")'" with X. If an error occurs,prog control will move to 1 "65")+("60952/3" 1 "65")+(" Errors besides D:BREAK,H: 1 "64884",M: 1 "60879",D: 1 "60878",J: 1 "60029",Z: 1 "60029",I: 1 "60020",F: 1 "60006",I: 1 "56777",E: 1 "56"*(N<P)'" SCROLL-OFF: 1 "54"+(N<P): 1 "53565"+N*K: 1 "4)Embed hidden colour CHR$ to set 1 "36"+A;", 26"'" SCROLL-OFF: 1 "36"+A;", 0" 1 "2590"*(N$="L") 1 "23681"-E)/ 1 "23670"),: 1 "23659",F*(N= 1 "23606",D: 1 "234"-Z,D: 1 "23295"+Z, 1 "20",E;"Also see Routines #22-23." 1 "20"*(NMAX=F) 1 "2.3025"): 1 "19",E;"8 calls" 1 "18",D;" WRAP-AROUND: 1 "16";"Right" 1 "15",E;"To scroll attributes as well, refer to routines 37-40(define suitable box & Attr value).Call the attribute scroll once per 1 call of this routine.": 1 "13";", 0"; 1 "111"),D;" 1 "109"),H;" 1 "'''"Where any part of SUPERCODEII isused in commercial programs,you MUST give prominent credit to this fact, in all packaging and advertising.Also,you must refer within the program to the joint authors of SUPERCODE II,F.VachhaBSc & V.B.Rumsey."'"Provided these conditions are obeyed ,no other restriction on use of SUPERCODEII is imposed." : 1 "''"Define Z1,Z2:-"'"For 1 "''"(1)To move a Relocatable Routineso that it starts at address Z,first 1 "'"Position: 56640-65535"'"Ramtop: 53589"'"Help Prog: 1 "'"Number of Routines: 1 "#";N;": "; 1 """""'" Incidentally,to 1 " WRAP-AROUND: 1 " To store this routine on tape, press 1 " To renumber without 1 " To renumber lines starting with S using interval I, 1 " To help with 1 " To follow '2 byte eq',see #101." 1 " To delete all lines from X to Y 1 " This routine zeroes all numeric variables/arrays,sets all 1 " This routine waits till a key (whose CODE will be put in L)is pressed."; 1 " This routine undoes the effect of #98, to allow lines of a CONFUSEd program to be EDITed/ altered." 1 " This routine swops all 1 " This routine simulates a power- off: ie, it not only does 1 " This routine shortens+speeds up programs by deleting all 1 " This routine scrolls up the lower X (0<X<25) 1 " This routine replays what #77 recorded. It is probably best to use your cassette-recorder (MIC socket) to amplify the sound." 1 " This routine replaces numbers in the program by VAL 1 " This routine replaces each occ- urrence of a specified 1 " This routine prints out a full analysis of memory contents, starting at the address whose less & more significant bytes (see #101)have been 1 " This routine places a random # pair in the System Variable SEED ( PEEK 23670 & 23671 )." ; 1 " This routine operates on 1 " This routine merges a 1 " This routine loads information stored in memory into an auto- created 1 " This routine lists each 1 " This routine lists all"'" (1) Numeric variables"'" (2) 1 " This routine inserts a given number into a block of memory. 1 " This routine expands programs so that there is exactly one statement per line (except in IF..THEN lines).In reply to the prompt, enter the no: of the line you want expanded, or just ENTER if you want the entire program expanded. You must use #60 after calling this routine." 1 " This routine enables you to determine the 1 " This routine does 1 " This routine deletes all hidden colour 1 " This routine decodes tapeheader information & prints out a full analysis (name, address, type, length & auto-start details." 1 " This routine allows hex 1 " This routine allows a block of lines to be relocated within a BASIC program.In order to shift lines 4200 till 6745 so they appear after2200 in the listing respond 4200,6745 & 2200 to the auto-prompts.The new lines will all have number 0.Now call #60 to renumber & #57 to delete the old lines. Fully errorproofed." 1 " This does 1 " The routine speeds up+contracts programs into the minimum no:of 1 " The routine changes all squares with a given 1 " The routine 1 " The free space F from the last Variable to RAMTOP is printed. Use 1 " THIS IS AN EXAMPLE OF THE SCIFI 1 " Routines 94 to 97 change the case (upper/lower)of strings or of the entire listing ( except strings),as specified.Note that an effective way of switching case from within programs is to POKE 23658,0 (LO) or 8(HI)." 1 " Routines # 18-21 & 47 are all special-effect scrolls." 1 " Only the last 4 hex digits are converted.Incidentally,ZX BASIC does not allow 1 " Move the cursor to the required 1 " In order to scroll a table of data > 22 lines long without stopping, use the command 1 " INVERSE SCR: 1 " Having connected the EAR socket of the cassette-recorder to the Spectrum,start playing the tape (Voice is best;Vol=Max),& 1 " For transfer of 1 " Follow the prompts to expand a REM statement (to accommodate code) anywhere in the program, by up to 9999 bytes" 1 " Error#6 if no: was out of range" 1 " Draw multipointed-stars & rings by first plotting a point near the middle of the screen & then using DRAW X,Y,N where X & Y have magnitudes from 10 to 60 & N lies between 1000 & 9999. You should experiment." 1 " Draw any closed figure on the screen, then PLOT a point lying INSIDE it. POKE 59293 with the Attribute value to be filled,& then call this routine." 1 " Decimal(0-65535) 1 " Corrupts the listing without affecting program execution: attempting to EDIT/alter lines could be fatal (thus useful for program protection, as are #68/ #80)." 1 " By POKEing 23606 & 23607 with different numbers, a corrupted character set is obtained. To normalise, POKE 23606,0 : POKE 23607,60. Protect your program with this, temporarily normal- ising before each PRINTing." 1 " Also see Routine #122" 1 " A set of accented 1 values are not changed.Refer to #25-27 for 1 to a ZX-Microdrive, press 1 to """" & all dimensioned 1 swops the current screen & the STOREd one A screen has 6912 bytes (24*32* 8, + 24*32 Attributes) & should be stored above RAMTOP (CLEARed downwards for room).For 1 saves a screen, 1 recalls it. 1 might not close every stream: use this instead."''" Incidentally 1)To disable 1 messages." 1 is now called 1 channel N (3<N<16) use 1 SAVE""Name""CODE ";A;",";B 1 ROUTINE # 65 HAS PREVENTED YOU FROM BREAKING INTO THIS PROGRAM 1 OVERPRINT 1 ERR+1,0'.Any BREAK/ error will now cause a crash. 6) 1 59580 ,I: POKE 59582/3,2 byte eq:of S Each 1 23733. Now 127=>16K, 255=>48K."; 1 23692,x where x is the no: of lines to be scrolled. To scroll 'forever' use 1 1.The 2 byte equivalents(see # 101)of the starting address of the memory & the no: of bytes must be stored in 63209/10 and 63206/07 respectively." 1 -rewind & replay the cassette from the start.When you come to this page,press 1 (Tape)."'"Note address,length,customising POKEs(if any)etc for future ref:": 1 (Repeat)."'" For a demo, press 1 (Quit). Use 1 (Number).": 1 (MDrve)." 1 (Demo)."'" To return to the Index, press 1 ( Location Change ). For BASIC, press 1 the cursor is pointing to."; 1 stored in RAM ( 1 no:,the next valid 1 k,0; to 1 into RAM.POKE 23563/4 with the 2 byte eq: of the first address to be changed 1 but also 1 X,Y;""Optional Message"";Variable The method works with 1 key pressed,play the cassette. This tfrs parts 1&2."'"(3)After the reset enter 1 arrays to 1 V.RUMSEY 1 BASIC programs."'" (b)To